package com.itaming.lycheeframework.jackson.modules;

import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.itaming.lycheeframework.jackson.serializer.JsSafeIntegerSerializer;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * 大数值序列化模块，避免前端精度丢失
 *
 * @author A.Ming
 */
public class BigNumberModule extends SimpleModule {

    public BigNumberModule() {
        // Long 和 BigInteger 使用自定义序列化器
        addSerializer(Long.TYPE, JsSafeIntegerSerializer.INSTANCE);
        addSerializer(Long.class, JsSafeIntegerSerializer.INSTANCE);
        addSerializer(BigInteger.class, JsSafeIntegerSerializer.INSTANCE);
        // BigDecimal 直接转为字符串
        addSerializer(BigDecimal.class, ToStringSerializer.instance);
    }

}
